package edu.whut.service;

import edu.whut.entity.Poem;

import java.util.List;

public interface PoemService {

    /***
     * 功能：增添诗，并返回成功或失败的结果
     * @param poem
     * @return 成功或失败的结果
     */
    Boolean addPoem(Poem poem);

    /***
     * 功能：根据poemId删除诗，并返回成功或失败的结果
     * @param poemId
     * @return 成功或失败的结果
     */
    Boolean deletePoem(Long poemId);

    /***
     * 功能：更新诗，并返回成功或失败的结果
     * @param poem
     * @return 成功或失败的结果
     */
    Boolean updatePoem(Poem poem);

    /***
     * 功能：根据poemId返回诗词
     * @param poemId
     * @return 诗词
     */
    Poem getPoem(Long poemId);

    /***
     * 功能：根据type返回列表形式的诗词集
     * @param type
     * @return 列表形式的诗词集
     */
    List<Poem> getPoemByType(String type,Integer cnt);

    /***
     * 功能：根据writer返回列表形式的诗词集
     * @param writer
     * @return 列表形式的诗词集
     */
    List<Poem> getPoemByWriter(String writer,Integer cnt);

    /***
     * 功能：根据dynasty返回列表形式的诗词集
     * @param dynasty
     * @return 列表形式的诗词集
     */
    List<Poem> getPoemByDynasty(String dynasty,Integer cnt);

    /***
     * 功能：直接返回所有的诗词集
     * @return 列表形式的诗词集
     */
    List<Poem> getAllPoem(Integer cnt);

    /***
     * 功能：根据标题模糊查询诗词集
     * @param title
     * @return 列表形式的诗词集
     */
    List<Poem> getPoemByTitle(String title,Integer cnt);

    /***
     * 功能：根据内容模糊查询诗词集
     * @param passage
     * @return 列表形式的诗词集
     */
    List<Poem> getPoemByPassage(String passage,Integer cnt);

    /***
     * 功能：根据输入的内容，进行标题、内容、体裁、作者、朝代的综合查询
     * @param field
     * @return 列表形式的诗词集
     */
    List<Poem> fuzzySearch(String field,Integer cnt);

    /***
     * 功能：根据标题精确查询对应的诗词
     * @param title
     * @return 单个诗词
     */
    Poem getOneByTitle(String title);
}
